home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / apps / 42 / apndx4.prf < prev    next >
Text File  |  1986-07-17  |  6KB  |  178 lines

  1. .!****************************************************************************
  2. .! 
  3. .! ANTIC PUBLISHING INC., COPYRIGHT 1985.  REPRINTED BY PERMISSION.
  4. .!
  5. .! ** Professional GEM ** by Tim Oren
  6. .!
  7. .! Proff File by ST enthusiasts at
  8. .! Case Western Reserve University
  9. .! Cleveland, Ohio
  10. .! uucp : decvax!cwruecmp!bammi
  11. .! csnet: bammi@case
  12. .! arpa : bammi%case@csnet-relay
  13. .! compuserve: 71515,155
  14. .!
  15. .!****************************************************************************
  16. .!
  17. .!            Begin Appendix 4
  18. .!
  19. .!***************************************************************************
  20. .!
  21. .!
  22. .AP IV Sample Code for Part V 
  23. /*
  24. >>>>>>>>>>>>>>>>>>>>>>>>>>> Sample object trees <<<<<<<<<<<<<<<<<<<<<<<<
  25. */
  26.  
  27. OBJECT rs_object[] = {
  28. -1, 1, 3, G_BOX, NONE, OUTLINED, 0x21100L, 0,0, 18,12,    /* Tree # 1 */
  29. 2, -1, -1, G_STRING, NONE, NORMAL, 0x0L, 3,1, 12,1,    
  30. 3, -1, -1, G_BUTTON, 0x7, NORMAL, 0x1L, 5,9, 8,1,    
  31. 0, 4, 4, G_BOX, NONE, NORMAL, 0xFF1172L, 3,3, 12,5,
  32. 3, -1, -1, G_IMAGE, LASTOB, NORMAL, 0x0L, 3,1, 6,3,    
  33. -1, 1, 6, G_BOX, NONE, OUTLINED, 0x21100L, 0,0, 23,12,  /* Tree # 2 */
  34. 2, -1, -1, G_TEXT, NONE, NORMAL, 0x0L, 0,1, 23,1,    
  35. 6, 3, 5, G_IBOX, NONE, NORMAL, 0x1100L, 6,3, 11,5,
  36. 4, -1, -1, G_BUTTON, 0x11, NORMAL, 0x5L, 0,0, 11,1,    
  37. 5, -1, -1, G_BUTTON, 0x11, NORMAL, 0x6L, 0,2, 11,1,    
  38. 2, -1, -1, G_BOXCHAR, 0x11, NORMAL, 0x43FF1400L, 0,4, 11,1,
  39. 0, -1, -1, G_BOXTEXT, 0x27, NORMAL, 0x1L, 5,9, 13,1,    
  40. -1, 1, 3, G_BOX, NONE, OUTLINED, 0x21100L, 0,0, 32,11,  /* Tree # 3 */
  41. 2, -1, -1, G_ICON, NONE, NORMAL, 0x0L, 4,1, 6,4,    
  42. 3, -1, -1, G_FTEXT, EDITABLE, NORMAL, 0x2L, 12,2, 14,1,    
  43. 0, 4, 4, G_FBOXTEXT, 0xE, NORMAL, 0x3L, 3,5, 25,4,    
  44. 3, -1, -1, G_ICON, LASTOB, NORMAL, 0x1L, 1,0, 6,4};    
  45. .bp 
  46. /*
  47. >>>>>>>>>>>>>>>>>>>>>>>>>> Object tree walk utility <<<<<<<<<<<<<<<<<<<<<<
  48. */ 
  49.         VOID
  50. map_tree(tree, this, last, routine)
  51.         LONG            tree;
  52.         WORD            this, last;
  53.         WORD            (*routine)();
  54.         {
  55.         WORD            tmp1;
  56.  
  57.         tmp1 = this;            /* Initialize to impossible value: */
  58.                                 /* TAIL won't point to self!       */
  59.                                 /* Look until final node, or off   */
  60.                                 /* the end of tree                 */ 
  61.         while (this != last && this != NIL)
  62.                                 /* Did we 'pop' into this node     */
  63.                                 /* for the second time?            */
  64.                 if (LWGET(OB_TAIL(this)) != tmp1)
  65.                         {
  66.                         tmp1 = this;    /* This is a new node       */
  67.                         this = NIL;
  68.                                         /* Apply operation, testing  */
  69.                                         /* for rejection of sub-tree */
  70.                         if ((*routine)(tree, tmp1))
  71.                                 this = LWGET(OB_HEAD(tmp1));
  72.                                         /* Subtree path not taken,   */
  73.                                         /* so traverse right         */ 
  74.                         if (this == NIL)
  75.                                 this = LWGET(OB_NEXT(tmp1));
  76.                         }
  77.                 else                    /* Revisiting parent:        */
  78.                                         /* No operation, move right  */
  79.                         {
  80.                         tmp1 = this;
  81.                         this = LWGET(OB_NEXT(tmp1));
  82.                         }
  83.         }
  84. .bp
  85. /*
  86. >>>>>>>>>>>>>>>>>> Sample routine to use with map_tree() <<<<<<<<<<<<<<<
  87. */ 
  88.     VOID
  89. undo_obj(tree, which, bit)    /* clear specified bit in object state    */
  90.     LONG    tree;
  91.     WORD    which, bit;
  92.     {
  93.     WORD    state;
  94.  
  95.     state = LWGET(OB_STATE(which));
  96.     LWSET(OB_STATE(which), state & ~bit);
  97.     }
  98.  
  99.     VOID
  100. desel_obj(tree, which)        /* turn off selected bit of spcfd object*/
  101.     LONG    tree;
  102.     WORD    which;
  103.     {
  104.     undo_obj(tree, which, SELECTED);
  105.     return (TRUE);
  106.     }
  107. .bp
  108. /*
  109. >>>>>>>>>>>>>>>>>>>>>>>>>> Sample .ICN Files <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  110. >>>>>>>>>> Save everything between >>><<< lines as CLOCK.ICN <<<<<<<<<<<<<<
  111. */
  112.  
  113. /* GEM Icon Definition: */
  114. #define ICON_W 0x0030
  115. #define ICON_H 0x0018
  116. #define DATASIZE 0x0048
  117. UWORD clock[DATASIZE] =
  118. { 0x0000, 0x0000, 0x0000, 0x0000, 
  119.   0x3FFC, 0x0000, 0x000F, 0xC003, 
  120.   0xF000, 0x0078, 0x0180, 0x1E00, 
  121.   0x0180, 0x0180, 0x0180, 0x0603, 
  122.   0x0180, 0xC060, 0x1C00, 0x0006, 
  123.   0x0038, 0x3000, 0x018C, 0x000C, 
  124.   0x60C0, 0x0198, 0x0306, 0x6000, 
  125.   0x01B0, 0x0006, 0x4000, 0x01E0, 
  126.   0x0002, 0xC000, 0x01C0, 0x0003, 
  127.   0xCFC0, 0x0180, 0x03F3, 0xC000, 
  128.   0x0000, 0x0003, 0x4000, 0x0000, 
  129.   0x0002, 0x6000, 0x0000, 0x0006, 
  130.   0x60C0, 0x0000, 0x0306, 0x3000, 
  131.   0x0000, 0x000C, 0x1C00, 0x0000, 
  132.   0x0038, 0x0603, 0x0180, 0xC060, 
  133.   0x0180, 0x0180, 0x0180, 0x0078, 
  134.   0x0180, 0x1E00, 0x000F, 0xC003, 
  135.   0xF000, 0x0000, 0x3FFC, 0x0000
  136. };
  137. /*
  138. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> End of CLOCK.ICN <<<<<<<<<<<<<<<<<<<<<<<<<<
  139. */
  140. .bp
  141. /*
  142. >>>>>>>>> Save everything between >>>><<<<< lines as CLOCKM.ICN <<<<<<<<<<
  143. */
  144.  
  145. /* GEM Icon Definition: */
  146. #define ICON_W 0x0030
  147. #define ICON_H 0x0018
  148. #define DATASIZE 0x0048
  149. UWORD clockm[DATASIZE] =
  150. { 0x0000, 0x0000, 0x0000, 0x0000, 
  151.   0x7FFE, 0x0000, 0x001F, 0xFFFF, 
  152.   0xFC00, 0x00FF, 0xFFFF, 0xFF00, 
  153.   0x03FF, 0xFFFF, 0xFFC0, 0x0FFF, 
  154.   0xFFFF, 0xFFF0, 0x3FFF, 0xFFFF, 
  155.   0xFFFC, 0x7FFF, 0xFFFF, 0xFFFE, 
  156.   0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
  157.   0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
  158.   0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
  159.   0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
  160.   0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
  161.   0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
  162.   0xFFFF, 0xFFFF, 0xFFFF, 0x7FFF, 
  163.   0xFFFF, 0xFFFE, 0x3FFF, 0xFFFF, 
  164.   0xFFFC, 0x0FFF, 0xFFFF, 0xFFF0, 
  165.   0x03FF, 0xFFFF, 0xFFC0, 0x00FF, 
  166.   0xFFFF, 0xFF00, 0x001F, 0xFFFF, 
  167.   0xF800, 0x0000, 0x7FFE, 0x0000
  168. };
  169. /*
  170. >>>>>>>>>>>>>>>>>>>>>>>>> End of CLOCKM.ICN <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  171. */
  172. .!
  173. .!****************************************************************************
  174. .!
  175. .!            End Appendix 4
  176. .!
  177. .!****************************************************************************
  178.